<?

//Initiate Authenticate
SecurityRedirect ();

//initiate Vars 
define("PRIMARY_KEY","nobkt");
$PRIMARY_KEY    = PRIMARY_KEY;
$PRIMARY_VALUE  = GetParam($PRIMARY_KEY,"");
$FileName       = "ais_approval_cbrc.php";
$FileTemplate   = "ais_approval_cbrc_form.html";
$SubHeaderTitle = "Transaction Cash/Bank - Received";
$TableName			= "ais_memorial_z";
$HTMLFormName   = "CashBankForm";
$MaxGrid        = "100";
//$HTMLFormName2  = "BudgetForm";

$FormAction    	= $FileName . "?" . AddParam(GetQueryString("QueryString", ""),"form","$HTMLFormName");
$FormEncType   	= "application/x-www-form-urlencoded";
//$PMode        = "";

//Initiate Grid Fields;
$FormFields    = array("uraian"=>"0",
			"urut"=>"",
			"norefnd"=>"",
			"skada"=>"",
			"jumlah"=>"number",
			"dk"=>"","noorder"=>"",
			"kdact"=>"",
			"noref"=>"","princ"=>"",
			"memorial_id"=>"");
//buildsqlfield ("$TableName", $FormFields);

//Leave Here Untouch
$FormCName     = BuildHTMLField($FormFields,"name",1);
$FormCValue    = BuildHTMLField($FormFields,"value",1);
$Trans = GetParam("Trans","");

if (GetParam("Trans","")==1) $GOTO = "../transaction/ais_transaction_cashbankreceived.php";
else $GOTO = $FileName;
//************ FORM ACTION **************
if (trim(GetParam("form",""))==trim($HTMLFormName)) {
	if (GetParam("FormAction","")=="Save") {

		list($FDay,$FMonth,$FYear) = explode("/",GetParam("tglbkt",""));
		$tglbkt = "$FYear-$FMonth-$FDay";
                list($FDay,$FMonth,$FYear) = explode("/",GetParam("duedate",""));
                $duedate = "$FYear-$FMonth-$FDay";
		$rate    = StrToNumber (GetParam("rate",""));

		if (trim(GetParam("nobkt",""))=="AUTO NUMBERED BY SYSTEM")	{
						if (GetParam("type","")=="Bank") {
							$ObjNumber  = new autonumber(GetParam("tglbkt",""),GetParam("kdbank",""));
							$TransNo = $ObjNumber->GetNumber("ZTB");
              FormSave("ais_memorial_z", "jumlah", $FormFields, array("ledger"=>GetPeriod(GetParam("tglbkt","")),"curr"=>GetParam("curr",""),"debtur"=>GetParam("debtur",""),"debnam"=>GetParam("debnam",""),"rate"=>$rate,"tglbkt"=>$tglbkt,"nobkt"=>$TransNo,"ktrasl"=>GetOfficeID(),"status"=>GetParam("status",""),"source"=>GetParam("source",""),"kdbank"=>GetParam("kdbank",""),"payby"=>GetParam("payby",""),"nocek"=>GetParam("nocek",""),"duedate"=>$duedate),"memorial_id");
            } else {
							$ObjNumber  = new autonumber(GetParam("tglbkt",""));
							$TransNo = $ObjNumber->GetNumber("ZTK");
              FormSave("ais_memorial_z", "jumlah", $FormFields, array("ledger"=>GetPeriod(GetParam("tglbkt","")),"curr"=>GetParam("curr",""),"debtur"=>GetParam("debtur",""),"debnam"=>GetParam("debnam",""),"rate"=>$rate,"tglbkt"=>$tglbkt,"nobkt"=>$TransNo,"ktrasl"=>GetOfficeID(),"status"=>GetParam("status",""),"source"=>GetParam("source",""),"kdcash"=>GetParam("kdcash",""),"payby"=>GetParam("payby",""),"nocek"=>GetParam("nocek",""),"duedate"=>$duedate),"memorial_id");
            }

			$DBConnection->add_data("ais_memorial_z","source",GetParam("source",""));
			$DBConnection->add_data("ais_memorial_z","urut","999");
			$DBConnection->add_data("ais_memorial_z","ktrasl",GetOfficeID());

			if (GetParam("type","")=="Bank") $DBConnection->add_data("ais_memorial_z","kdbank",GetParam("kdbank",""));
			else $DBConnection->add_data("ais_memorial_z","kdcash",GetParam("kdcash",""));

			$DBConnection->add_data("ais_memorial_z","ledger",GetPeriod(GetParam("tglbkt","")));
			$DBConnection->add_data("ais_memorial_z","curr",GetParam("curr",""));
      $DBConnection->add_data("ais_memorial_z","duedate",$duedate);
      $DBConnection->add_data("ais_memorial_z","payby",GetParam("payby",""));
      $DBConnection->add_data("ais_memorial_z","nocek",GetParam("nocek",""));
			$DBConnection->add_data("ais_memorial_z","rate",$rate);	
			$DBConnection->add_data("ais_memorial_z","nobkt",$TransNo);
			$DBConnection->add_data("ais_memorial_z","tglbkt",$tglbkt);
			$DBConnection->add_data("ais_memorial_z","dk",GetParam("dk999",""));
			$DBConnection->add_data("ais_memorial_z","noorder",GetParam("noorder999",""));
			$DBConnection->add_data("ais_memorial_z","debtur",GetParam("debtur",""));
			$DBConnection->add_data("ais_memorial_z","debnam",GetParam("debnam",""));
			$DBConnection->add_data("ais_memorial_z","skada",GetParam("skada999",""));
			$DBConnection->add_data("ais_memorial_z","kdact",GetParam("kdact999",""));
			$DBConnection->add_data("ais_memorial_z","uraian",GetParam("uraian999",""));
			$DBConnection->add_data("ais_memorial_z","jumlah",StrToNumber(GetParam("total_trans","")));
			$DBConnection->add_data("ais_memorial_z","rupiah",StrToNumber(GetParam("total_trans","")) * $rate);
			$DBConnection->add_data("ais_memorial_z","noref",GetParam("noref1",""));

			$DBConnection->InsertGrid();

	    } else {
		    $TransNo = GetParam("nobkt","");
		    $DBConnection->dbc->query("DELETE FROM ais_memorial_z WHERE nobkt='".$TransNo."' AND ktrasl='".GetOfficeID()."'");
		    $DBConnection->dbc->query("DELETE FROM ais_piutang_z WHERE nobkt='".$TransNo."' AND ktrasl='".GetOfficeID()."'");

			FormSave("ais_memorial_z", "jumlah", $FormFields, array("ledger"=>GetPeriod(GetParam("tglbkt","")),"curr"=>GetParam("curr",""),"debtur"=>GetParam("debtur",""),"debnam"=>GetParam("debnam",""),"rate"=>$rate,"tglbkt"=>$tglbkt,"nobkt"=>$TransNo,"ktrasl"=>GetOfficeID(),"status"=>GetParam("status",""),"kdact"=>GetParam("kdact",""),"source"=>GetParam("source",""),"kdbank"=>GetParam("kdbank",""),"kdcash"=>GetParam("kdcash",""),"payby"=>GetParam("payby",""),"nocek"=>GetParam("nocek",""),"duedate"=>$duedate),"memorial_id");
			$DBConnection->add_data("ais_memorial_z","source",GetParam("source",""));
			$DBConnection->add_data("ais_memorial_z","urut","999");
			$DBConnection->add_data("ais_memorial_z","ktrasl",GetOfficeID());
      $DBConnection->add_data("ais_memorial_z","kdbank",GetParam("kdbank",""));
      $DBConnection->add_data("ais_memorial_z","kdcash",GetParam("kdcash",""));

      $DBConnection->add_data("ais_memorial_z","duedate",$duedate);
      $DBConnection->add_data("ais_memorial_z","payby",GetParam("payby",""));
      $DBConnection->add_data("ais_memorial_z","nocek",GetParam("nocek",""));

			$DBConnection->add_data("ais_memorial_z","ledger",GetPeriod(GetParam("tglbkt","")));
			$DBConnection->add_data("ais_memorial_z","curr",GetParam("curr",""));
			$DBConnection->add_data("ais_memorial_z","rate",$rate);			
			$DBConnection->add_data("ais_memorial_z","nobkt",$TransNo);
			$DBConnection->add_data("ais_memorial_z","tglbkt",$tglbkt);
			$DBConnection->add_data("ais_memorial_z","dk",GetParam("dk999",""));
			$DBConnection->add_data("ais_memorial_z","noorder",GetParam("noorder999",""));
			$DBConnection->add_data("ais_memorial_z","debtur",GetParam("debtur",""));
			$DBConnection->add_data("ais_memorial_z","debnam",GetParam("debnam",""));
			$DBConnection->add_data("ais_memorial_z","skada",GetParam("skada999",""));
			$DBConnection->add_data("ais_memorial_z","kdact",GetParam("kdact",""));
			$DBConnection->add_data("ais_memorial_z","uraian",GetParam("uraian999",""));
			$DBConnection->add_data("ais_memorial_z","jumlah",StrToNumber(GetParam("total_trans","")));
			$DBConnection->add_data("ais_memorial_z","rupiah",StrToNumber(GetParam("total_trans","")) * $rate);
			$DBConnection->add_data("ais_memorial_z","noref",GetParam("noref1",""));
			$DBConnection->add_data("ais_memorial_z","status",GetParam("status",""));
			$DBConnection->InsertGrid();

		}
	    
		//DeleteRecord ("txtCheck",$MaxGrid);
		if (GetParam("Trans","")) header("Location: ../transaction/ais_transaction_cashbankreceived.php");
		else header("Location: $FileName?PageMode=Form&".PRIMARY_KEY."=".$TransNo."&ttype=".GetParam("type",""));
		exit;
	}

	if (GetParam("FormAction","")=="Delete") {
                        $SQL = "SELECT noref FROM $TableName WHERE nobkt='".GetParam($sequence_name.$x,"")."'";
                        $RefNo = $DBConnection->dbc->get_var($SQL);
                        if (ereg("KW",$RefNo)) {
                            $SQL = "UPDATE ais_receipt SET aslref='' WHERE nokwit='$RefNo'";
                            $DBConnection->dbc->query($SQL);
                        }
		
                DeleteTrans(GetParam("nobkt",""));                
                header("Location: $FileName?");
                exit;
        }

	if (GetParam("FormAction","")=="Approval") {
			$TransNo = GetParam("nobkt","");
			SetTransApproval(GetParam("Type",""),$TransNo);
			header("Location: $FileName");
			exit;
	}
}

//Field Verification 
$Verification  = "False";
$SessionVar    = md5(microtime());
//$SessionVar    = "Stuck";
$VerifyFields = array("source"=>"Source",
                      "nobkt"=>"ID No.",
                      "tglbkt"=>"Transaction Date",
                      "curr"=>"Currency",
					            "skada1"=>"Skada On Line 1",
                      "uraian1"=>"Uraian On Line 1",
                      "uraian999"=>"Uraian On Line 999",
                      "uraian1"=>"Uraian On Line 1",
                      "noref999"=>"Ref On Line 999"                      
                      );
VerifyHTML ($HTMLFormName,$VerifyFields,$SessionVar,array("debtur"=>"Debtur"));

if (GetParam(PRIMARY_KEY,"")) {
	$SQLCount     = "SELECT count(*) FROM `$TableName`";
	$SQLCount    .= "WHERE ".PRIMARY_KEY."='".$PRIMARY_VALUE."' AND urut<>999";
	$Count        = $DBConnection->dbc->get_var($SQLCount);	
} else 
	$Count=0;

//$NewDataStart = $Count + 1;
$NewDataStart = 1;
$InitFunction = "Masking();Masking2();";

$VerifyGrids = array("uraian"=>"0","jumlah"=>"number","skada"=>"0","dk"=>"","noref"=>"");
$Masking1 = BuildMasking ($HTMLFormName,MutatorFields($FormFields,($MaxGrid+$Count)));
$Masking2 = BuildMasking ($HTMLFormName,array("tglbkt"=>"date","rate"=>"number","duedate"=>"date"),"2");
$JSMasks  = $Masking1.$Masking2;

Init($SessionVar,$JSMasks);
FormGridHTML ($HTMLFormName,$VerifyGrids,$Count,$MaxGrid,$SessionVar);

//************ SET FORM MODE ***************
if (GetParam(PRIMARY_KEY,"")) {
	$FormMode = "Edit";
	if (CheckisApproved("Approval1",GetParam(PRIMARY_KEY,""))) $USER_CANAPPROVAL1 = "";
	if (CheckisApproved("Approval2",GetParam(PRIMARY_KEY,""))) $USER_CANAPPROVAL2 = "";
	if (CheckisApproved("Approval3",GetParam(PRIMARY_KEY,""))) $USER_CANAPPROVAL3 = "";
} else {
	$FormMode = "Add";
	$USER_CANAPPROVAL1 = "";
	$USER_CANAPPROVAL2 = "";
	$USER_CANAPPROVAL3 = "";
}

//******* DATABASE GRID QUERY ***********

$SQL = "SELECT ".BuildFields($FormFields)." FROM `$TableName`";
if (GetParam(PRIMARY_KEY,"") && $FormMode="Edit") {
    $SQL      = $SQL."WHERE ".PRIMARY_KEY." ='".GetParam(PRIMARY_KEY,"")."'";
    $SQL     .= " AND ktrasl='".GetOfficeID()."'";
    $SQLGrid  = $SQL." ORDER BY ".PRIMARY_KEY;
}


//******* SHOW FORM CONTENT *********
$TBS = new clsTinyButStrong ;
$TBS->LoadTemplate($MOD_TEMPLATE_DIR."/".$FileTemplate);

//********************************* HTML Header ******************************************
//Select Currency Table
$SQLCurr = "SELECT * FROM tblcurrency";
//Select Department:
$SQLDept = "SELECT * FROM tbldept";
//Select Receipt:
$SQLReceipt = "SELECT * FROM tblreceipt";
//Select Bank:
$SQLBank = "SELECT * FROM tblbank ORDER BY banknam";
//Select Cash:
$SQLCash = "SELECT * FROM tblcash ORDER BY cashnam";
//Select Activity
$SQLAct  = "SELECT  * FROM tblactivity ORDER BY actname";

$HeaderFields = array("source"=>"",
                      "nobkt"=>"0",
                      "tglbkt"=>"date",
                      "curr"=>"",
                      "rate"=>"number",
                      "debtur"=>"",
                      "debnam"=>"",
                      "kdcash"=>"",
                      "kdbank"=>"",
                      "duedate"=>"",
                      "nocek"=>"",
                      "payby"=>""                      
                      );
//Leave Here Untouch
$FormHName     = BuildHTMLField($HeaderFields,"name",1);
$FormHValue    = BuildHTMLField($HeaderFields,"value",1);
$SQLHeader     = "SELECT ".BuildFields($HeaderFields)." FROM $TableName ";

if (GetParam(PRIMARY_KEY,"") && $FormMode="Edit") $SQLHeader .= "WHERE ".PRIMARY_KEY."='".GetParam(PRIMARY_KEY,"")."' AND ktrasl='".GetOfficeID()."'";
$TBS->MergeBlock("deptblk",$DBMysql,$SQLDept);
$TBS->MergeBlock("bankblk",$DBMysql,$SQLBank);
if (GetParam("ttype","")) $ttype = GetParam("ttype","");
elseif (GetParam("nobkt","")) {
	$SQL = "SELECT IF(kdcash='','Bank','Cash') FROM ais_memorial_z WHERE ".PRIMARY_KEY."='".GetParam(PRIMARY_KEY,"")."' AND urut=999 ";
	$ttype = $DBConnection->dbc->get_var($SQL);
} else $ttype = "Bank";
$TBS->MergeBlock("cashblk",$DBMysql,$SQLCash);
$TBS->MergeBlock("currformblk",$DBMysql,$SQLCurr);
$TBS->MergeBlock("receiptblk",$DBMysql,$SQLReceipt);
$TBS->MergeBlock("actblk",$DBMysql,$SQLAct);
$TBS->MergeBlock("actblk999",$DBMysql,$SQLAct);


//Total 999 Values
/*
$Fields9       = array("noref999"=>"0","jumlah999"=>"number","skada999"=>"0","untush999"=>"0");
$Form9Value    = BuildHTMLField($Fields9,"value",1);
*/

$SQL999 = "SELECT * FROM ais_memorial_z "."WHERE ".PRIMARY_KEY." ='".GetParam(PRIMARY_KEY,"")."' AND ktrasl='".GetOfficeID()."' ";
$SQL999 = $SQL999." AND urut = 999";

$TBS->MergeBlock("dept999blk",$DBMysql,$SQLDept);
if (GetParam(PRIMARY_KEY,"")) {$TBS->MergeBlock("blg9",$DBMysql,$SQL999);}
else {
  $TBS->MergeBlock("blg9",$FormCValue);
}

// HTML Value
$TBS->MergeBlock("headbln",$FormHName);
if (GetParam(PRIMARY_KEY,"")) {$TBS->MergeBlock("headblv",$DBMysql,$SQLHeader);}
else $TBS->MergeBlock("headblv",$FormHValue);

//********************************* HTML GRID *********************************************
//HTML Grid
$SQLGrid = "SELECT * FROM ais_memorial_z "."WHERE ".PRIMARY_KEY." ='".GetParam(PRIMARY_KEY,"")."' AND ktrasl='".GetOfficeID()."' AND urut<>999";
//print $SQLGrid;
$Result  = $DBConnection->dbc->get_results($SQLGrid,ARRAY_A);
$Result  = BuildEmptyGrid ($FormFields, $MaxGrid, $Result);

//$Result  = BuildEmptyGrid ($FormFields, $MaxGrid, $Result);

$TBS->MergeBlock("blg",$Result);
$TBS->Show();


//*************** ACTION FUNCTION *******************
function FormInsert() {
	global $DBConnection,$FileName;
	$DBConnection->Insert();
	header("Location: $FileName?PageMode=Form");
	exit;
}

function FormUpdate() {
	global $DBConnection;
	$DBConnection->Update();
}

function FormDelete() {
	global $DBConnection,$FileName,$TableName;
	$DBConnection->deleteGrid("$TableName","nobkt");
	header("Location: $FileName");
	exit;	
}

function FormSearch () {

}

function FormCancel () {
	global $FileName;
	header("Location: ".$FileName);
	exit;
}

function DeleteTrans($nobkt) {
global $DBConnection;
                        
                        $SQL = "DELETE FROM ais_memorial_z WHERE nobkt='$nobkt' ";
                        $DBConnection->dbc->query($SQL);
                        
                        $SQL = "DELETE FROM ais_hutang_z WHERE nobkt='$nobkt' ";
                        $DBConnection->dbc->query($SQL);

}

function FormSaveHutang ($table, $keyField, $FormFields, $SpecialCase="", $PrimaryKey) {
	global $FileName, $MaxGrid, $DBConnection;
	$TotalData = $MaxGrid * 2;	
	$NewDataStart = GetParam("NewData","0");
//	$NewDataStart = 1;
	for ($a=1;$a<=$TotalData;$a++) {
		foreach ($FormFields as $key=>$formatting) {
			if (!GetParam($keyField.$a,"")) {
				$EndOfData = 1;
				break;
			}
			$value = GetParam($key.$a,"");
			if ($formatting=="number") $value = str_replace(",","",$value);
			if ($formatting=="date") {
				list($day,$month,$year) = explode("/",$value);
				$value = "$year-$month-$day";
		    }
			$DBConnection->add_data($table,$key,$value);
		}
		$rate = StrToNumber(GetParam("rate",""));
		$jmh  = StrToNumber(GetParam("jumlah".$a,""));
		$rupiah = $rate * $jmh;
		$DBConnection->add_data($table,"rupiah",$rupiah);
		$DBConnection->add_data($table,"rupiah",$rupiah);
		if ($EndOfData) {
			break;
	    }
		if (strlen($SpecialCase)) {
			foreach ($SpecialCase as $key => $value) {
			//	print "add_data($table,$key,$value);<br>";
				$DBConnection->add_data($table,$key,$value);
			}
		}
//		print "$a < $NewDataStart<br>";
		if ($a < $NewDataStart) {
			 if (strlen($PrimaryKey)) {
			    $DBConnection->UpdateGrid($PrimaryKey,GetParam($PrimaryKey.$a,""));
		 	 } else {
			    $DBConnection->UpdateGrid($keyField,GetParam($keyField.$a,""));
		     }
		} else {
			$DBConnection->InsertGrid();
	    }
	}
	$DBConnection->clearData();
}


function FormSave ($table, $keyField, $FormFields, $SpecialCase="", $PrimaryKey) {
	global $FileName, $MaxGrid, $DBConnection;
	$TotalData = $MaxGrid * 2;	
	$NewDataStart = GetParam("NewData","0");
//	$NewDataStart = 1;
	for ($a=1;$a<=$TotalData;$a++) {
		foreach ($FormFields as $key=>$formatting) {
			if (!GetParam($keyField.$a,"")) {
				$EndOfData = 1;
				break;
			}
			$value = GetParam($key.$a,"");
			if ($formatting=="number") $value = str_replace(",","",$value);
			if ($formatting=="date") {
				list($day,$month,$year) = explode("/",$value);
				$value = "$year-$month-$day";
		    }
			$DBConnection->add_data($table,$key,$value);
		}
		$rate = StrToNumber(GetParam("rate",""));
		$jmh  = StrToNumber(GetParam("jumlah".$a,""));
		$rupiah = $rate * $jmh;
		$DBConnection->add_data($table,"rupiah",$rupiah);
		if ($EndOfData) {
			break;
	    }
		if (strlen($SpecialCase)) {
			foreach ($SpecialCase as $key => $value) {
			//	print "add_data($table,$key,$value);<br>";
				$DBConnection->add_data($table,$key,$value);
			}
		}
//		print "$a < $NewDataStart<br>";
		if ($a < $NewDataStart) {
			 if (strlen($PrimaryKey)) {
			    $DBConnection->UpdateGrid($PrimaryKey,GetParam($PrimaryKey.$a,""));
		 	 } else {
			    $DBConnection->UpdateGrid($keyField,GetParam($keyField.$a,""));
		     }
		} else {
			$DBConnection->InsertGrid();
	    }
	}
	$DBConnection->clearData();
}
//*************** USER FUNCTION *******************
function buildsqlfield ($table, $arrayfield) {
		global $DBConnection;
		for ($x=0;$x<count($arrayfield);$x++) {
			$DBConnection->add_htmlfield($table,$arrayfield[$x],GetParam($arrayfield[$x],""));
		}
}

function DeleteRecord ($sequence_name,$PageSize) {
	global $DBConnection,$FileName,$TableName;	
	for ($x=1;$x<=$PageSize;$x++) {				
		if (GetParam($sequence_name.$x,""))	{
			$DBConnection->deleteGrid("$TableName","receipt_id",$sequence_name.$x);
	    }
	}
}

function BuildFields ($FormFields) {
		global $DBConnection;
		$str = "";
		foreach ($FormFields as $key=>$formatting) {
			if (strlen($str)) $str .= ",$key";
			else $str = "$key";
		}
		return $str;
}

function MutatorFields ($FormFields, $MaxGrid) {
		global $DBConnection;
		$array_fields = array();
		for ($x=0;$x<$MaxGrid;$x++) {
			foreach ($FormFields as $key=>$formatting){
				$a=$x+1;
				$array_fields[$key.$a] = "$formatting";
			}			
		}
		return $array_fields;
}

//APROVAL FUNCTIION BEGIN
function SetTransApproval($appr_level,$nobkt) {
	global $DBConnection;
	if (!(ereg("TB",$nobkt) || ereg("TK",$nobkt) || ereg("BB",$nobkt) || ereg("BK",$nobkt))) return;
	if ($appr_level=="Approval1") {
		CheckAndUpdateAppr("Approval1",$nobkt);
		SetLogActivity($nobkt,"Approval1","");
	}elseif ($appr_level=="Approval2") {
		CheckAndUpdateAppr("Approval1",$nobkt);
		CheckAndUpdateAppr("Approval2",$nobkt);
		MoveRecord($nobkt);
		SetLogActivity($nobkt,"Approval2","");
                //CheckAndUpdateCache ($nobkt);
	}else {
		CheckAndUpdateAppr("Approval1",$nobkt);
		CheckAndUpdateAppr("Approval2",$nobkt);
		CheckAndUpdateAppr("Approval3",$nobkt);


	}
}

function GetTransDate($nobkt) {
  global $DBConnection;
  $SQL = "SELECT date_format(tglbkt,'%d/%m/%Y') FROM ais_memorial_z WHERE nobkt='$nobkt' ";
  return $DBConnection->dbc->get_var($SQL);
}

function MoveRecord($nobkt) {
		global $DBConnection;
		//Set Number on tblnumbering		
		ereg("TB|TK|BB|BK",$nobkt,$Mod);
		if (($Mod[0]=="TB")||($Mod[0]=="BB")) {
			$GetCode = $DBConnection->dbc->get_var("SELECT kdbank FROM ais_memorial_z WHERE nobkt='$nobkt'");
		}elseif (($Mod[0]=="TK")||($Mod[0]=="BK")) {
			//$GetCode = $DBConnection->dbc->get_var("SELECT kdcash FROM ais_memorial_z WHERE nobkt='$nobkt'");
		}
    $JumlahToBalance = $DBConnection->dbc->get_var("SELECT jumlah FROM ais_memorial_z WHERE nobkt='$nobkt' AND urut=999");
                
		$CurrentDate = GetTransDate($nobkt);
		
		if (strlen($GetCode)) {
			$ObjNumber  = new autonumber($CurrentDate,$GetCode);
		}	else {
			$ObjNumber  = new autonumber($CurrentDate);
		}
		$TransNo = $ObjNumber->GetNumber($Mod[0]);
		$Ledger = GetPeriod($CurrentDate);
		$SytemDate   = date("Y-m-d");

		//Update Number on ais_memorial_z
		$SQL = "UPDATE ais_memorial_z SET nobkt='$TransNo' WHERE nobkt='$nobkt'";
		$DBConnection->dbc->query($SQL);
                //Update Number on ais_piutang_z
		$SQL = "UPDATE ais_piutang_z SET nobkt='$TransNo' WHERE nobkt='$nobkt'";
		$DBConnection->dbc->query($SQL);
		//Migrate data from ais_memorial_z to ais_memorial
		$SQL = "INSERT INTO ais_memorial (".GetColumnStruct("ais_memorial", "memorial_id").") SELECT ".GetColumnStruct("ais_memorial", "memorial_id")." FROM ais_memorial_z WHERE nobkt='$TransNo'";
		$DBConnection->dbc->query($SQL);		
                
/*
                $SQL = "INSERT INTO ais_hutang (ledger,ktrasl,tglbkt,nobkt,urut,noref,nobkta,skada,debtur,debnam,uraian,curr,jumlah,dk,rate,rupiah,srt) 
                            SELECT ledger,ktrasl,tglbkt,nobkt,urut,noref,noref,skada,debtur,debnam,uraian,curr,jumlah,dk,rate,rupiah,if(dk='D','2','1') FROM ais_memorial_z WHERE (skada like '3%' OR skada like '4%') AND nobkt='".$TransNo."' ";
                $DBConnection->dbc->query($SQL);
                //$DBConnection->dbc->debug();

                $SQL = "INSERT INTO ais_piutang (ledger,ktrasl,tglbkt,nobkt,normut,noref,nobkta,skada,debtur,debnam,uraian,curr,jumlah,dk,rate,rupiah,srt) 
                            SELECT ledger,ktrasl,tglbkt,nobkt,urut,noref,noref,skada,debtur,debnam,uraian,curr,jumlah,dk,rate,rupiah,if(dk='D','1','2') FROM ais_memorial_z WHERE (skada like '0006%' OR skada like '0007%') AND nobkt='".$TransNo."' ";
                $DBConnection->dbc->query($SQL);
*/

    SaveAging($TransNo);
		//Delete ais_memorial_z
		$SQL = "DELETE FROM ais_memorial_z WHERE nobkt='$TransNo'";
		$DBConnection->dbc->query($SQL);
		$SQL = "DELETE FROM ais_piutang_z WHERE nobkt='$TransNo'";
		$DBConnection->dbc->query($SQL);
                //Update Bank Or Cash
                if ($Mod[0]=="TB") {
                  $SQL = "UPDATE tblbank SET balance=balance+$JumlahToBalance WHERE kdbank='".$GetCode."'" ;
                } elseif ($Mod[0]=="TK") {
                  $SQL = "UPDATE tblcash SET balance=balance+$JumlahToBalance WHERE kdcash='".$GetCode."'" ;
                }
                $DBConnection->dbc->query($SQL);
                
                //Update History Transaction
                $SQL = "SELECT * FROM ais_memorial WHERE nobkt='$TransNo' AND urut=999";
                $MyResult = $DBConnection->dbc->get_row($SQL);
                if ($MyResult) {
                    if (ereg("KW",$MyResult->noref)) {
                        $SQL = "UPDATE ais_receipt SET aslref='".$TransNo."' WHERE nokwit='".$MyResult->noref."'";
                        $DBConnection->dbc->query($SQL);
                        if (mysql_error()) print $SQL.mysql_error();
                    }
                /*
                  $SQL = "UPDATE ais_memorial_history SET memo_jour='".$MyResult->nobkt."', jml_memo='".$MyResult->jumlah."' WHERE memoesti='".$MyResult->aslref."' AND ktrasl='".GetOfficeID()."'";
                  $DBConnection->dbc->query($SQL);
                  $DBConnection->dbc->debug();
                  */
                }

}


function CheckisApproved($appr_level,$nobkt){
	global $DBConnection;
	if ($appr_level=="Approval1") $f_app = "app1";
	elseif ($appr_level=="Approval2") $f_app = "app2";
	elseif ($appr_level=="Approval3") $f_app = "app3";
	
	$SQL = "SELECT $f_app FROM ais_memorial_z WHERE nobkt='$nobkt'";
	if ($DBConnection->dbc->get_var($SQL)==1) return true;
	else return false;
}



function CheckAndUpdateAppr($appr_level,$nobkt){
	global $DBConnection,$FileName,$TableName;	
	if ($appr_level=="Approval1") {
		$SQL = "SELECT app1 FROM ais_memorial_z WHERE nobkt='$nobkt'";
		$ApprStat = $DBConnection->dbc->get_var($SQL);
		if ($ApprStat<>'1') 
			$SQL = "UPDATE ais_memorial_z SET app1='1', nmapp1='".GetStaffName()."' WHERE nobkt = '$nobkt'";
		else return false;

	} elseif ($appr_level=="Approval2") {
		$SQL = "SELECT app2 FROM ais_memorial_z WHERE nobkt='$nobkt'";
		$ApprStat = $DBConnection->dbc->get_var($SQL);
		if ($ApprStat<>'1') 
			$SQL = "UPDATE ais_memorial_z SET app2='1', nmapp2='".GetStaffName()."' WHERE nobkt = '$nobkt'";
		else return false;
	} else {
		$SQL = "SELECT app3 FROM ais_memorial_z WHERE nobkt='$nobkt'";
		$ApprStat = $DBConnection->dbc->get_var($SQL);
		if ($ApprStat<>'1') 
			$SQL = "UPDATE ais_memorial_z SET app3='1', nmapp3='".GetStaffName()."' WHERE nobkt = '$nobkt'";
		else return false;
	}
	$DBConnection->dbc->query($SQL);
}

function FlushCustomer ($TableName, $tmp) {
	global $DBConnection;

	if ($tmp) $TEMPORARY = "TEMPORARY";
	$DBC = new mydb(DB_USER, DB_PASSWORD, DB_NAME2, DB_HOST);

	$SQL = "SELECT kodecustomer,nama,cr_term,kdtype FROM customer ";
	if (GetParam("kdtype","")) $SQL .= " WHERE kdtype='".GetParam("kdtype","")."'";
	$MyResult = $DBC->dbc->get_results($SQL,ARRAY_N);
	if (!$MyResult) return false;
 	$session_file = substr(md5(time()), 0, 8);
   	$session_file = "/tmp/".$session_file.".tmp";
	BufferToFile ($MyResult,$session_file);

	$DBConnection = new mydb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);   	
	$SQL = "DROP TABLE IF EXISTS `$TableName`;";
	$DBConnection->dbc->query($SQL);

	$SQL= "CREATE $TEMPORARY TABLE `$TableName` (
			  `kodecustomer` varchar(20) NOT NULL default '',
			  `nama` varchar(50) default NULL,
			  `cr_term` int(4) default NULL,
			  `kdtype` varchar(20) default NULL
			  )";
	$DBConnection->dbc->query($SQL);

   	$SQL = "LOAD DATA INFILE '$session_file' INTO TABLE $TableName FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'";
	$DBConnection->dbc->query($SQL);
	unlink($session_file);
	return true;
}

function GetLastDateReport($fromSkada,$toSkada,$ktrasl,$curr,$tglbkt) {
	global $DBConnection;
	list($day,$month,$year) = explode("/",$tglbkt);
	$current_date = "$year-$month-$day";

        $SQL = "DELETE FROM ais_piutang_sisa WHERE aging_date>='$current_date' ";
        if ($curr) $SQL .= " AND curr='".$curr."' ";
	if ($fromSkada) $SQL .= " AND fromskada = '".$fromSkada."' ";
        if ($toSkada) $SQL .= " AND toskada = '".$toSkada."' ";
        $DBConnection->dbc->query($SQL);
        //$DBConnection->dbc->debug();

	$SQL = "SELECT max(aging_date) FROM ais_piutang_sisa WHERE aging_date<='$current_date' ";
        if ($curr) $SQL .= " AND curr='".$curr."' ";
	if ($fromSkada) $SQL .= " AND fromskada = '".$fromSkada."' ";
        if ($toSkada) $SQL .= " AND toskada = '".$toSkada."' ";        
        
	return $DBConnection->dbc->get_var($SQL);
}

function CheckAndUpdateCache ($nobkt) {
//check debit note
              $SQL = "SELECT skada,curr,ktrasl,tglbkt FROM ais_piutang WHERE nobkt='$nobkt' AND normut=999 ";
              $MyResult = $DBConnection->dbc->get_results($SQL, ARRAY_A);
	    foreach($MyResult as $row)
	    {
              GenerateAgingCache($row["skada"],$row["skada"],$row["ktrasl"],$row["curr"],$row["tglbkt"]);
            }
}

function GenerateAgingCache($fromSkada,$toSkada,$ktrasl,$curr,$tglbkt) {
		 	global $DBConnection;
			//$TEMP = "TEMPORARY";

		 	if (!FlushCustomer ("ais_customer", 1)) return false;
			//$current_date = date("Y-m-d",mktime (0,0,0,GetParam("m",""),1,GetParam("y","")));

			list($day,$month,$year) = explode("/",$tglbkt);
			$current_date = "$year-$month-$day";
			$LastDate  = GetLastDateReport($fromSkada,$toSkada,$ktrasl,$curr,$tglbkt);

			$SQL = "DROP TABLE IF EXISTS `ais_piutang_terhutang`";
			$DBConnection->dbc->query($SQL);

			$SQL = "
					CREATE $TEMP TABLE `ais_piutang_terhutang` (
					  `ktrasl` varchar(5) default NULL,
					  `tglbkt` date,
					  `nobkt` varchar(16) default NULL,	
                                          `nobkta` varchar(16) default NULL,
					  `debtur` varchar(16) default NULL,
					  `debnam` varchar(32) default NULL,
					  `uraian` text default NULL,
					  `curr` varchar(4) default NULL,
					  `jumlah` varchar(32) default NULL,
					  `cr_term` tinyint(4)default NULL,
                                          `top_curr` date,
                                          `top_30` date,
                                          `top_60` date,
                                          `aging` varchar(16)
					);
				   ";
			$DBConnection->dbc->query($SQL);

			$SQL = "
					INSERT INTO ais_piutang_terhutang
					SELECT KTRASL, TGLBKT, NOBKT,NOBKTA, ais_customer.kodecustomer, ais_customer.nama, URAIAN, CURR, JUMLAH, IFNULL(CR_TERM,0) AS TOP, 

					ADDDATE( tglbkt,INTERVAL ais_customer.cr_term DAY ) as top_curr,
					ADDDATE( tglbkt,INTERVAL 30+ais_customer.cr_term DAY ) as top_30,
					ADDDATE( tglbkt,INTERVAL 60+ais_customer.cr_term DAY ) as top_60,

                                        IF('$current_date'<=ADDDATE( tglbkt,INTERVAL ais_customer.cr_term DAY ),'0',
                                        IF('$current_date'<=ADDDATE( tglbkt,INTERVAL 30+ais_customer.cr_term DAY ),'30',
                                        IF('$current_date'<=ADDDATE( tglbkt,INTERVAL 60+ais_customer.cr_term DAY ),'60','60g')))

					FROM ais_piutang
					LEFT JOIN ais_customer ON ais_piutang.DEBTUR=ais_customer.kodecustomer
					WHERE srt='1' AND ais_piutang.tglbkt<='$current_date'
				   ";

			if (strlen($LastDate))
			$SQL .= "AND ais_piutang.tglbkt>'$LastDate' ";
			
			if ($fromSkada) 
			$SQL .= "AND ais_piutang.skada >= '".$fromSkada."' ";

			if ($curr) 
			$SQL .= "AND ais_piutang.curr = '".$curr."' ";

			if ($toSkada)
			$SQL .= "AND ais_piutang.skada <= '".$toSkada."' ";

                        //print $SQL;die();
			if ($ktrasl)  $SQL .= "AND ais_piutang.ktrasl = '".$ktrasl."' ";

			$SQL .= "order by nobkt ";
			$DBConnection->dbc->query($SQL);

			$SQL = "DROP TABLE IF EXISTS `ais_piutang_terbayar`";
			$DBConnection->dbc->query($SQL);

			$SQL = "
					CREATE $TEMP TABLE `ais_piutang_terbayar` (
					  `nobkt` varchar(16) default NULL,					  
					  `nobkta` varchar(16) default NULL,
                                          `bayar` decimal(15,3) default NULL,
					  `debtur` varchar(64) default NULL,					  
					  `debnam` varchar(128) default NULL                                          
					) ;
				   ";
			$DBConnection->dbc->query($SQL);

			$SQL = "
					INSERT INTO ais_piutang_terbayar
					SELECT NOBKT, NOBKTA, SUM(JUMLAH),debtur,debnam
					FROM ais_piutang
                                        LEFT JOIN ais_customer ON ais_piutang.DEBTUR=ais_customer.kodecustomer
					WHERE srt='2' AND ais_piutang.tglbkt<='$current_date' ";

			if (strlen($LastDate))
			$SQL .= "AND ais_piutang.tglbkt>'$LastDate' ";

                        //print $SQL;die();
			if (GetOfficeID())  
                        $SQL .= "AND ais_piutang.ktrasl = '".GetOfficeID()."' ";

			if ($curr) 
			$SQL .= "AND ais_piutang.curr = '".$curr."' ";

            $SQL .= "group by nobkta order by nobkta";
                        //print $SQL;die();
			$DBConnection->dbc->query($SQL);
			//$DBConnection->dbc->debug();

//Auto Update Using Cache Begin Here
			 if (strlen($LastDate)) {

				$SQL = "DROP TABLE IF EXISTS `ais_piutang_sisa_period`";
				$DBConnection->dbc->query($SQL);

				$SQL = "
						CREATE $TEMP TABLE `ais_piutang_sisa_period` (
						  `ktrasl` varchar(5) default NULL,
						  `tglbkt` date,
						  `aging_date` date,					  
						  `nobkt` varchar(16) default NULL,
						  `debtur` varchar(16) default NULL,
						  `debnam` varchar(32) default NULL,
						  `uraian` text default NULL,
                                                  `cr_term` tinyint(4)default NULL,
						  `jumlah` decimal(15,2) default NULL,
                                                  `aging` varchar(16),
                                                  `fromskada` varchar(16),
                                                  `toskada` varchar(16),
                                                  `curr`varchar(5)
						)
					   ";
				$DBConnection->dbc->query($SQL);
	             $SQL = "
	                      INSERT INTO ais_piutang_sisa_period
	                      SELECT *
	                      FROM ais_piutang_sisa
	                      WHERE aging_date='$LastDate' AND fromskada='".$fromSkada."' AND toskada='".$toSkada."'
						";
                              if ($curr)  $SQL .= " AND curr='".$curr."' ";
                              
				 $DBConnection->dbc->query($SQL);

                       $SQL = " 
	             		  INSERT INTO ais_piutang_sisa_period
                                  SELECT ktrasl,tglbkt,'$current_date',nobkt,debtur,debnam,uraian,cr_term,jumlah,aging,'".$fromSkada."','".$toSkada."','".$curr."'
                                  FROM ais_piutang_terhutang
	                    ";
				 $DBConnection->dbc->query($SQL);


		             $SQL = "
		                      INSERT INTO ais_piutang_sisa
		                      SELECT 
		                      ais_piutang_sisa_period.ktrasl,
		                      ais_piutang_sisa_period.tglbkt,
		                      '$current_date',
		                      ais_piutang_sisa_period.nobkt,
		                      ais_piutang_sisa_period.debtur,
		                      ais_piutang_sisa_period.debnam,
		                      ais_piutang_sisa_period.uraian,
		                      ifnull(ais_piutang_sisa_period.cr_term, 0) AS top,
		                      ifnull(ais_piutang_sisa_period.jumlah,0)-ifnull(ais_piutang_terbayar.bayar,0),

			                  IF('$current_date'<=ADDDATE( tglbkt,INTERVAL ais_piutang_sisa_period.cr_term DAY ),'0',
			                  IF('$current_date'<=ADDDATE( tglbkt,INTERVAL 30+ais_piutang_sisa_period.cr_term DAY ),'30',
			                  IF('$current_date'<=ADDDATE( tglbkt,INTERVAL 60+ais_piutang_sisa_period.cr_term DAY ),'60','60g'))),
                                          '".$fromSkada."','".$toSkada."','".$curr."'

		                      FROM
		                      ais_piutang_sisa_period
		                      LEFT JOIN ais_piutang_terbayar ON (ais_piutang_sisa_period.nobkt = ais_piutang_terbayar.nobkta)
		                      WHERE (ifnull(ais_piutang_terbayar.nobkt, '') = '') OR ifnull(ais_piutang_sisa_period.jumlah-ais_piutang_terbayar.bayar,0) <> 0
		                      ORDER BY debtur,nobkt
		                    ";
					 $DBConnection->dbc->query($SQL);

			 } else {
		             $SQL = "
		                      INSERT INTO ais_piutang_sisa
		                      SELECT 
		                      ais_piutang_terhutang.ktrasl,
		                      ais_piutang_terhutang.tglbkt,
		                      '$current_date',
		                      ais_piutang_terhutang.nobkt,
		                      ais_piutang_terhutang.debtur,
		                      ais_piutang_terhutang.debnam,
		                      ais_piutang_terhutang.uraian,
		                      ifnull(ais_piutang_terhutang.cr_term, 0) AS top,
		                      ifnull(ais_piutang_terhutang.jumlah,0)-ifnull(ais_piutang_terbayar.bayar,0),
		                      
		                    IF('$current_date'<=ADDDATE( tglbkt,INTERVAL ais_piutang_terhutang.cr_term DAY ),'0',
		                    IF('$current_date'<=ADDDATE( tglbkt,INTERVAL 30+ais_piutang_terhutang.cr_term DAY ),'30',
		                    IF('$current_date'<=ADDDATE( tglbkt,INTERVAL 60+ais_piutang_terhutang.cr_term DAY ),'60','60g'))),
                                          '".$fromSkada."','".$toSkada."','".$curr."'
                                          
		                      FROM
		                      ais_piutang_terhutang
		                      LEFT JOIN ais_piutang_terbayar ON (ais_piutang_terhutang.nobkt = ais_piutang_terbayar.nobkta)
		                      WHERE (ifnull(ais_piutang_terbayar.nobkt, '') = '') OR ifnull(ais_piutang_terhutang.jumlah-ais_piutang_terbayar.bayar,0) <> 0
		                      ORDER BY debtur,nobkt
		                    ";
					$DBConnection->dbc->query($SQL);

			}
//Auto Update Using Cache End Here

//			$SQL = "SELECT * FROM ais_aging WHERE aging_date='$current_date'";

}

?>
